#pragma once

#include <stdlib.h>     
#include <time.h>     
#include <opencv2\opencv.hpp>

#include "KeySort.h"

using namespace std;
using namespace cv;

class GeneticAlgorithm
{
private:
	int numberOfElements;
	int numberOfAttributes;
	float percentOfLeaders;
	float percentOfMutants;
	int numberOfIterations;
	Mat_<KeySort> GeneticAlgorithm::initializeElements();
	Mat dataMat;
	Mat labelsMat;
public:
	GeneticAlgorithm(const int numberOfElements,
					 const int numberOfAttributes,
					 const int numberOfIterations,
					 const float percentOfLeaders,
					 const float percentOfMutants);

	//virtual float evaluation(Mat_<float> vec) = 0;
	Mat runGeneticAlgorithm();
};